import {
  config
} from '../config.js'

// 错误码
const tip = {
  1: '抱歉，出现了一个错误',
  1000: '输入参数错误',
  1001: '输入的json格式不正确',
  1002: '找不到资源',
  1003: '未知错误',
  1004: '禁止访问',
  1005: '不正确的开发者key',
  1006: '服务器内部错误',
  // 200x 点赞类型
  2000: '你已经点过赞了',
  2001: '你还没点过赞',
  // 300x 期刊类型
  3000: '该期内容不存在',
}

class HTTP {
  request({
    url,
    data = {},
    method = 'GET'
  }) {
    return new Promise((resolve, reject) => {
      this._request(url, resolve, reject, data, method)
    })
  }

  _request(url, resolve, reject, data = {}, method = 'GET') {
    wx.request({
      method,
      data,
      url: config.api_base_url + url,
      header: {
        'content-type': 'application/json',
        'appkey': config.appkey
      },
      success: (res) => {
        const code = res.statusCode.toString()
        if (code.startsWith('2')) {
          resolve(res.data)
        } else {
          reject()
          const error_code = res.data.error_code
          this._show_error(error_code)
        }
      },
      fail: (err) => {
        reject()
        this._show_error(1)
      }
    })
  }

  _show_error(error_code = 1) {
    const tip = tip[error_code]
    wx.showToast({
      title: tip ? tip[error_code] : tip[1],
      icon: 'none',
      duration: 2000
    })
  }
}

export {
  HTTP
}